package l2hc.gameserver.handler.voicecommands.impl;

import l2hc.gameserver.Config;
import l2hc.gameserver.handler.voicecommands.IVoicedCommandHandler;
import l2hc.gameserver.model.GameObjectsStorage;
import l2hc.gameserver.model.Player;
import l2hc.gameserver.model.Zone.ZoneType;
import l2hc.gameserver.scripts.Functions;

public class Leader implements IVoicedCommandHandler
{
  
  private static final String[] VOICED_COMMANDS = {"GoToLeader"};
  final int Coin = Config.PRICE_TELEPORT_CL;
  
  
  public boolean useVoicedCommand(String command, Player activeChar, String target)
  {
	  if (Config.COMMAND_GoToLeader)
		{
    if (command.equalsIgnoreCase("GoToLeader"))
    {
		
      if (activeChar.getClan() == null)
      {
        return false;
      }

      Player leader = (Player)GameObjectsStorage.findObject(activeChar.getClan().getLeaderId());

      if (leader == null)
      {
        activeChar.sendMessage("Клан лидер в офлайне.");
        return false;
      }
		if((leader.isInParty()) && (leader.getParty().isInDimensionalRift())||leader.isCursedWeaponEquipped()||leader.isInJail()|| leader.isFestivalParticipant() ||leader.getReflectionId() != 0 || leader.isDead() || leader.isAlikeDead() || leader.isCastingNow() || leader.isInCombat() || leader.isAttackingNow() || leader.isInOlympiadMode() || leader.isFlying() || leader.isTerritoryFlagEquipped() || leader.isInZone(ZoneType.no_escape) || leader.isInZone(ZoneType.SIEGE) || leader.isInZone(ZoneType.epic))
		{
			activeChar.sendMessage("Телепортация невозможна. Клан лидер не соответствует критериям.");
			return false;
		}
      else {
        if ((activeChar.getClan() != null) && (leader.getCastle().getSiegeEvent().isInProgress()))
        {
          activeChar.sendMessage("Ваш клан лидер в осадной зоне. Телепортация не возможна.");
          return false;
        }
		if((activeChar.isInParty()) && (activeChar.getParty().isInDimensionalRift())|| activeChar.isCursedWeaponEquipped() ||activeChar.isFestivalParticipant()|| activeChar.isInJail()|| activeChar.getReflectionId() != 0 || activeChar.isDead() || activeChar.isAlikeDead() || activeChar.isCastingNow() || activeChar.isInCombat() || activeChar.isAttackingNow() || activeChar.isInOlympiadMode() || activeChar.isFlying() || activeChar.isTerritoryFlagEquipped() || activeChar.isInZone(ZoneType.no_escape) || activeChar.isInZone(ZoneType.SIEGE) || activeChar.isInZone(ZoneType.epic))
		{
			activeChar.sendMessage("Телепортация невозможна.  Вы не соответствуете критериям.");
			return false;
		}
        else 
        {
          if ((activeChar.getClan() != null) && (activeChar.getCastle().getSiegeEvent().isInProgress()))
          {
            activeChar.sendMessage("Вы в осадной зоне. Телепортация невозможна.");
            return false;
          }

          if (activeChar == leader)
          {
            activeChar.sendMessage("Вы клан лидер. Телепортация невозможна.");
            return false; } }
      }
	      if (Coin != 0 && activeChar.getInventory().getItemByItemId(Config.GO_TO_CL_ITEM_ID).getCount() < Coin)
			{
				activeChar.sendMessage("Вы не имеете достаточно денег");
				activeChar.sendActionFailed();
				return false;
			}
	      int leaderx = leader.getX();
	      int leadery = leader.getY();
	      int leaderz = leader.getZ();
	      activeChar.teleToLocation(leaderx, leadery, leaderz);
	      activeChar.sendMessage("Вы перемещены к клан лидеру.");
	      Functions.removeItem(activeChar, Config.GO_TO_CL_ITEM_ID, Coin);
	      activeChar.sendMessage("Плата за использование телепорта снята.");
    }
    }
    return true;
  }

  public String[] getVoicedCommandList() 
  {
    return VOICED_COMMANDS;
  }
}